//
//  STEmoticonTools.swift
//  STVVeibo
//
//  Created by leergou on 16/7/30.
//  Copyright © 2016年 WhiteHouse. All rights reserved.
//

import UIKit
// 计算最大列数
let emoticonMaxRow: Int = 3
let emoticonMaxCol: Int = 7
// 每页最多表情个数
let emoticonMaxCount: Int = 20

class STEmoticonTools: NSObject {
    
    // 全局访问点
    static let emoticonSharedTools: STEmoticonTools = STEmoticonTools()
    // 获取表情文件包的 bundle
    lazy var emoticonBundle: NSBundle = {
        // 路径
        let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)!
        // 返回一个 NSBundle 对象
        return NSBundle(path: path)!
    }()

    
    // emoticon 表情三维数组
    lazy var allEmoticons:[[[STEmoticon]]] = {
       return [
        self.getEmoticonGroup(self.defaultEmoticons),
        self.getEmoticonGroup(self.emojiEmoticons),
        self.getEmoticonGroup(self.lxhEmoticons)
        ]
    }()
    
    //MARK: lazy
    // 默认表情
    lazy var defaultEmoticons: [STEmoticon] = {
        return self.getEmoticons("default/")
    }()
    // emoji表情
    lazy var emojiEmoticons: [STEmoticon] = {
        return self.getEmoticons("emoji/")
    }()
    // 浪小花
    lazy var lxhEmoticons: [STEmoticon] = {
        return self.getEmoticons("lxh/")
    }()
    
    
    //MARK: 一维数组转为二维数组
    // 一维数组转为二维数组
    func getEmoticonGroup(emoticons: [STEmoticon])->[[STEmoticon]]{
        // 计算页数
        let pageCount = (emoticons.count + emoticonMaxCount - 1) / emoticonMaxCount
        // 定义一个可变二维数组
        var tempArray:[[STEmoticon]] = [[STEmoticon]]()
        // 遍历页数,截取一维数组,保存到二维数组
        for index in 0..<pageCount{
            // 每次截取起始位置
            let location = index * emoticonMaxCount
            // 每次截取的长度
            var length = emoticonMaxCount
            if (emoticons.count - emoticonMaxCount * index) < emoticonMaxCount{
                length = emoticons.count - emoticonMaxCount * index
            }
            // 计算range
            let range = NSRange(location: location, length: length)
            // 截取后的一位数组
            let array = (emoticons as NSArray).subarrayWithRange(range) as! [STEmoticon]
            // 添加到临时数组
            tempArray.append(array)
        }
        return tempArray
    }
    
    //MARK: 读取数据内容
    // 读取plist 文件
    func getEmoticons(name: String)->[STEmoticon]{
        // plist文件路径
        let file = emoticonBundle.pathForResource("\(name)info.plist", ofType: nil)!
        // 读取plist 文件内容到数组
        let array = NSArray(contentsOfFile: file)!
        // 创建一个可变临时数组
        var tempArray:[STEmoticon] = [STEmoticon]()
        // 遍历数组,字典转模型
        for dict in array{
            // 创建一个模型
            let emoticon = STEmoticon(dict: dict as! [String : AnyObject])
            emoticon.path = "\(name)\(emoticon.png ?? "")"
            // 添加到临时数组
            tempArray.append(emoticon)
        }
        return tempArray
    }
    
    // 根据图片名称得到对应的模型
    func searchEmoticons(chs: String?)-> STEmoticon? {
        // 遍历默认表情数组
        for emotion in defaultEmoticons{
            // 判断是否相同
            if emotion.chs == chs {
                return emotion
            }
        }
        
        // 遍历浪小花表情数组
        for emotion in lxhEmoticons {
            if emotion.chs == chs {
                return emotion
            }
        }
        
        return nil
    }
    
    
}























